<template>
  <div class="employees-container">
    <div class="app-container">
      <el-card>
        <!-- 放置表单 -->
        <el-form ref="userForm" label-width="120px" :model="userInfo" :rules="rules" style="margin-left: 120px; margin-top:30px">
          <el-form-item label="姓名:" prop="username">
            <el-input v-model="userInfo.username" style="width:300px" />
          </el-form-item>

          <el-form-item label="手机">
            <el-input v-model="userInfo.mobile" disabled style="width:300px" />
          </el-form-item>

          <el-form-item label="入职时间">
            <el-date-picker
              v-model="userInfo.timeOfEntry"
              type="date"
              value-format="yyyy-MM-dd"
            />
          </el-form-item>

          <el-form-item label="员工头像">
            <!-- <upload-img :url="userInfo.staffPhoto" @get-url="getUrl" /> -->
            <upload-img v-model="userInfo.staffPhoto" />

          </el-form-item>

          <!-- 保存个人信息 -->
          <el-row class="inline-info" type="flex" justify="center">
            <el-col :span="12">
              <el-button type="primary" @click="confirm">保存更新</el-button>
              <el-button @click="$router.back()">返回</el-button>
            </el-col>
          </el-row>
        </el-form>
      </el-card>
    </div>
  </div>
</template>

<script>
// 数据回显
// 1. 准备接口
// 2. 路由方法获取id
// 3. 发送接口请求
// 4. 绑定的表单中

// 业务使用图片url
// 目标：把上传成功的图片url放到userInfo属性的staffPhoto字段中
// url子组件 upload-img  使用的位置是在父组件  怎么做？ - 子传父

// 图片更新时候的回显
// 决定是否回显的字段位于子组件中的imageUrl
// 现在的图片资源存放在父组件中的userInfo里面了
// 方案：通过父传子传入同步过去
// 如果你想把props中的数据同步到data上 最佳方案其实是watch 一旦prop变化就立刻手动同步

// v-model优化[在原来父子通信的基础上更加简单 简单指的是代码量简单了]

// v-model语法糖
// 概念：基于一些旧的语法复杂的语法经过一定的封装变成简单的语法 把复杂度内置 开发人员写起来更加简单
// v-if  v-for
// v-model语法糖都做了什么事儿？
/**
 <upload-img  v-model="userInfo.staffPhoto"/>

 1. 在组件身上绑定一个默认名称为 value的属性prop  <upload-img :value="userInfo.staffPhoto"/>
 2. 在组件身上绑定一个默认名称为 input的自定义事件 <upload-img @input="cb"/>
 3. 当在组件内部通过this.$emit()去触发input事件的时候 事件参数会被自动复制给v-model绑定的属性身上
    this.$emit('input',payload)  userInfo.staffPhoto = payload
 */
import { getUserDetailById, saveUserDetailById } from '@/api/user'
export default {
  data() {
    return {
      userInfo: {},
      rules: {}
    }
  },
  mounted() {
    this.fetchDetail()
  },
  methods: {
    async fetchDetail() {
      const res = await getUserDetailById(this.$route.query.id)
      this.userInfo = res.data
    },
    async confirm() {
      // 调用更新接口
      await saveUserDetailById(this.userInfo)
      this.$message.success('修改成功')
    }
    // getUrl(imgUrl) {
    //   this.userInfo.staffPhoto = imgUrl
    // }
  }
}
</script>
